/* 
导出一个封装好的axios实例
*/

import axios from "axios"
import { ElMessage } from 'element-plus'

//创建一个axios实例

//超时处理
const timeout=10000
const ErrorMap={
    [`timeout of ${timeout}ms exceeded`]:"请求超时，请稍后重试"
}
const request=axios.create({
    //存放公共配置，baseURL，timeout
    baseURL:"http://121.89.205.189:3000",
    //baseURL:"http://localhost:3000/banners",
    timeout:1000*10
})

//请求拦截  interceptors.request固定写法，请求拦截器 .use接受两个函数回调
request.interceptors.request.use((config)=>{
    //第一个函数收到的是请求配置config
    //登陆后给的token 存储到localstorage里面
    const token=localStorage.getItem("token")
    if(token){
        //如果token存在，就给config配置里的请求头里添加token
        config.headers.token=token
    }
    return config
},
(err)=>{
    return Promise.reject(err)
}
)

//请求响应拦截器  interceper.response
request.interceptors.response.use(
    (response)=>{
        const data=response.data
        if(data.code==200){
            ElMessage({
                message:data.message,
                type:"success"
            })
            return data
        }else{
            //错误提示
            //alert(data.message)

            //将alert美化一下，使用ele组件message方法，需要手动引入样式
            ElMessage({
                message:data.message,
                type:"error"
            })

            //让代码进入catch
            return Promise.reject(data)
        }
    },
    (err)=>{
        //处理非2XX的响应
        ElMessage({
            message:ErrorMap[err.message] || "网络异常，请稍后重试",
            type:"error"
        })
        /* console.log(
            '1111'
        ); */
    }
)

//导出这个实例
export default request